WebViewで端末のバックキーの挙動を変えるという記事を書きました。
が、一部の端末でちょっと変な動作が発生していたようです。
EditTextの中で文章を書いている最中に、文章を間違ったとします。
BackSpaceキーを押して文章を消そうとすると……
Activityが閉じてしまうのです。
端末の種類によっては上記のようなことは起こらず、普通に動作するのでこの不具合に気付くのが遅れました。
これを修正するには、WebViewのソース内にこんな記述が必要です。
// 端末の戻るボタンを押した時に前のページに戻す @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // ページを進んでいたら if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack() == true) { System.out.println("event.getAction():" + event.getAction()); System.out.println("keyCode:" + keyCode); ReturnPage(); return true; } //BackSpaceを押したとき else if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_DEL) { System.out.println("event.getAction():" + event.getAction()); System.out.println("keyCode:" + keyCode); return true; } // トップページならActivity終了 else { Finish(); return true; } }
端末によっては、EditTextで文章を書いているときにBackSpaceを押すとkeyCodeがKeyEvent.KEYCODE_DELでイベントが発生します。
ちゃんとif文の条件で受け取って何も処理しないようにしないとだめです。
こうすると、ちゃんと……
文章を消すことができます!
コメントを残す